package com.wn.main.ui.system.adapter

import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import com.wn.common.model.ArticleList
import com.wn.common.provider.MainServiceProvider
import com.wn.framework.adapter.BaseBindViewHolder
import com.wn.framework.adapter.BaseRecyclerViewAdapter
import com.wn.main.databinding.LayoutArticleItemBinding
import dagger.hilt.android.qualifiers.ActivityContext
import javax.inject.Inject

/**
 * @Author: wn
 * @Date: 2025/6/5 17:12
 * @Description: 体系中 viewpager2 对应的 Fragment -- 数据列表的 Adapter
 */
// 是否使用 hilt -- 用 但是不添加作用域
class SystemArticleAdapter @Inject constructor(@ActivityContext private val context: Context) :
  BaseRecyclerViewAdapter<ArticleList.ArticleInfo, LayoutArticleItemBinding>() {
  /**
   * 点击 收藏按钮 触发
   */
  var onClickCollect: ((position: Int, item: ArticleList.ArticleInfo) -> Unit)? = null

  /**
   * 子类通过 xml实现 ViewBinding，父类提供了 LayoutInflater ，viewType
   * 可以根据不同的 viewType传递不同的 viewBinding -- when
   */
  override fun getViewBinding(
    layoutInflater: LayoutInflater,
    parent: ViewGroup,
    viewType: Int,
  ): LayoutArticleItemBinding = LayoutArticleItemBinding.inflate(layoutInflater, parent, false)

  /**
   * 子类重写该方法绑定数据
   * 重写 [getViewBinding] 即可实现不同ViewHolder传递
   */
  override fun setViewBinding(
    holder: BaseBindViewHolder<LayoutArticleItemBinding>,
    item: ArticleList.ArticleInfo?,
    position: Int,
  ) {
    item?.also {
      holder.apply {
        // 传递 data 给 xml
        binding.item = it
        // 点击整个 Item 去详情页
        itemView.setOnClickListener {
          if (item.link.isNullOrEmpty()) return@setOnClickListener
          MainServiceProvider.toArticleDetail(context, item.link!!, item.title ?: "")
        }
        // 点击收藏按钮
        binding.ivCollect.setOnClickListener {
          // 触发收藏事件
          onClickCollect?.invoke(position, item)
        }
      }
    }
  }
}